package CargaJuego;

import java.awt.Image;
import java.util.HashMap;

/**
 * Mapeo de caracteres para cargar un escenario. Realiza un mapeo desde un caracter (char) a una
 * imagen.
 * 
 * @author Mariano Rodecker
 * @author Matias Varela
 * 
 */
public class MapeoCaracteresEscenario {
	/* ################## ATRIBUTOS DE INSTANCIA ######################## */
	protected HashMap<Character, Image> mapeo;

	/* ################## CONSTRUCTORES ######################## */
	/**
	 * Constructor para un mapeo de escenario donde se inicializa el estado interno y se crea el
	 * mapeo. Se realiza un mapeo de caracteres (char) a imagen.
	 * 
	 * @param imagenes
	 *            - imagenes correspondientes a las imagenes que componen el escenario
	 */
	public MapeoCaracteresEscenario(Image[] imagenes) {
		mapeo = new HashMap<Character, Image>();
		cargarMapeo(imagenes);
	}

	/* ################## CONSULTAS ######################## */
	/**
	 * Obtiene una imagen a partir de una clave dada.
	 * 
	 * @param clave
	 * @return una imagen a partir de una clave dada.
	 */
	public Image getImage(Character clave) {
		return mapeo.get(clave);
	}

	/* ################## METODOS DE LA CLASE ######################## */

	/*
	 * El arreglo de imagenes contiene todas las imagenes correspondientes a un Escenario, luego a
	 * partir de este se realiza el mapeo con los caracteres
	 */
	private void cargarMapeo(Image[] imagenes) {
		/* De la A la F las letras corresponden a las imagenes de una nube */
		Character A = new Character('D');
		mapeo.put(A, imagenes[0]);

		Character B = new Character('E');
		mapeo.put(B, imagenes[1]);

		Character C = new Character('F');
		mapeo.put(C, imagenes[2]);

		Character D = new Character('G');
		mapeo.put(D, imagenes[3]);

		Character E = new Character('H');
		mapeo.put(E, imagenes[4]);

		Character F = new Character('I');
		mapeo.put(F, imagenes[5]);
		/* De la G a la L corresponden a una planta */
		Character G = new Character('J');
		mapeo.put(G, imagenes[6]);

		Character H = new Character('K');
		mapeo.put(H, imagenes[7]);

		Character I = new Character('L');
		mapeo.put(I, imagenes[8]);

		Character J = new Character('M');
		mapeo.put(J, imagenes[9]);

		Character K = new Character('N');
		mapeo.put(K, imagenes[10]);

		Character L = new Character('O');
		mapeo.put(L, imagenes[11]);

		/* la M corresponde a una planta chica */
		Character M = new Character('P');
		mapeo.put(M, imagenes[12]);

		/* la N corresponde a una Flor */
		Character N = new Character('Q');
		mapeo.put(N, imagenes[13]);

		/* la O corresponde a un honguito (no PowerUp) */
		Character O = new Character('R');
		mapeo.put(O, imagenes[14]);

		Character V = new Character('Z');
		mapeo.put(V, null);
	}

}
